﻿using System;
using System.Collections.Generic;
using OigSync.Infrastructure.Domain;

namespace OigSync.Infrastructure.Repository
{
    /*
     * Repository接口类
     */
    public interface IRepository<T> where T : EntityBase
    {
        /*
         * 从持久层延迟载入对象
         */
        T Load(Object key);

        /*
         * 从持久层即时载入对象
         */
        T Get(Object key);

        /*
         * 从持久层获取所有对象
         */
        IList<T> GetAll();

        /*
         * 保存对象到持久层
         */
        void Save(T entity);

        /*
         * 更新持久层对象
         */
        void Update(T entity);

        /*
         * 删除持久层对象
         */
        void Delete(T entity);
    }
}
